<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel='stylesheet' href='../rurple.css' type='text/css'>
<title>38. 体验类</title>
</head>
<body>

<h2 class="title">38. 体验类 "<span class="pykeyword">class</span>"</h2>
<p>我们已经看到如何为一个已经存在的class增加方法--我们维修了机器人，使得它能够右转.  下面是另外一个位已经存在的类增加方法.<p>
<pre>
<span class="keyword">class</span> Amazing(RefurbishedRobot):
    <span class="keyword">def</span> diag(self):
        self.set_trace_style(1, <span class="string">'white'</span>)
        self.turn_left()
        self.move()
        self.turn_right()
        self.move()
        self.set_trace_style(1, <span class="string">'sea green'</span>)

Magician = Amazing()
Magician.move()
Magician.move()
Magician.diag()
Magician.diag()
Magician.move()
Magician.move()
Magician.turn_off()
</pre>
<p><img alt="magic"  src="../../images/future/magic.png"></p>
<p>T新的机器人知道所有 <tt>RefurbishedRobot</tt> 知道的方法 [比如, <tt>move(), turn_off()</tt>] ,此外他还有一个新方法 [<tt>diag()</tt>].</p>
<h3 class="section">设计一个新<span class="pykeyword">class</span></h3>
<p>S有时候我们想创建一个新的类,这个新的类修改了已有的类所定义的基本行为.  为此, 我们需要重新定义一个特别的方法[<tt>__init__()</tt>].  下面的例子中, 我们 "修正了漏油问题", 这样新的机器人将不会留下踪迹. 事实上, 我们做的就是留下白色的踪迹,而不是原来的海绿色踪迹, 同时划在大街的中央 [定义为风格 5] 因此它会被灰色的点线所覆盖, 就好像被机器人涂掉了一样.</p>
<pre>
<span class="keyword">class</span> Eraser(RefurbishedRobot):
    <span class="keyword">def</span> __init__(self):
        RefurbishedRobot.__init__(self)
        self.set_trace_style(5, <span class="string">'white'</span>)

Sneaky = Eraser()
<span class="keyword">while</span> Sneaky.front_is_clear():
    Sneaky.move()
Sneaky.turn_off()
</pre>
<p><img alt="eraser"  src="../../images/future/eraser.png"></p>
<center>
<a href="../lessons_toc.htm"><img alt="home"  src="../../images/home.png"></a>
</center>
<p>你也许想用其他的风格 (1 到 5)来显示成其它颜色.</p>
<center><a href="37-class.htm"><img alt="previous" src=
"../../images/previous.png">修补乐跑机器人</a> - <a href=
"../lessons_toc.htm"><img alt="home" src="../../images/home.png"></a> - <a href=
"39-import.htm">避免重复 - Import.<img alt="next"
src="../../images/next.png"></a></center>

</body>
</html>
